#include "H/MAIN.H"
unsigned int  timereset1;
unsigned int  timereset2;

unsigned char  R_LED_DATA_COM[D_COM_Total];       
unsigned char  R_LED_CNT;      
unsigned char  R_LED_Ram_Save;   
bit  F_I2C_DISP;  

uint32_t key_value_save = 0;


#if D_SEG_Total>8
unsigned int code C_LED_DISP[]=
#else 
unsigned char code C_LED_DISP[]=
#endif
{
//??0         ??1         ??2        ??3        ??4  
  B00111111,  B00000110,  B01011011, B01001111, B01100110,\
//??5         ??6         ??7        ??8        ??9
  B01101101,  B01111101,  B00000111, B01111111, B01101111,\
//??A         ??B         ??C        ??D        ??E    
  B01110111,  B01111100,  B00111001, B01011110, B01111001,\
//??F         ??0.        ??1.       ??2.       ??3. 
  B01110001,  B10111111,  B10000110, B11011011, B11001111,\  
//??4.        ??5.        ??6.       ??7.       ??8. 
  B11100110,  B11101101,  B11111101, B10000111, B11111111,\ 
//??9.        ??A.        ??B.       ??C.       ??D. 
  B11101111,  B11110111,  B11111100, B10111001, B11011110,\
//??E.        ??F.        ????       ???DP     ???-
  B11111001,  B11110001,  B00000000, B10000000, B01000000
};


//实现共阴数码管驱动

/*****************************************************
*函数名称：void LED_CLOSE()
*函数功能：关闭所有灯
*入口参数：void
*出口参数：void
*作者：XY
*****************************************************/
void LED_CLOSE()
{
     //关灯 COM
     #if ((D_COM_Total>8)||(D_COM_Total==8)) 	
	   IO_LED_COM7=1;	
     #endif
     #if ((D_COM_Total>7)||(D_COM_Total==7)) 	
	   IO_LED_COM6=1;
     #endif		
     #if ((D_COM_Total>6)||(D_COM_Total==6)) 
	   IO_LED_COM5=1;	
     #endif
     #if ((D_COM_Total>5)||(D_COM_Total==5)) 
	   IO_LED_COM4=1;
     #endif		
     #if ((D_COM_Total>4)||(D_COM_Total==4)) 
	   IO_LED_COM3=1;
     #endif		
     #if ((D_COM_Total>3)||(D_COM_Total==3)) 
	   IO_LED_COM2=1;	
     #endif
     #if ((D_COM_Total>2)||(D_COM_Total==2)) 
	   IO_LED_COM1=1;	
     #endif	
     #if ((D_COM_Total>1)||(D_COM_Total==1))
	   IO_LED_COM0=1;
     #endif	
	
		 //关灯 SEG
     #if ((D_SEG_Total>12)||(D_SEG_Total==12)) 
	   IO_LED_SEG11=0;	
     #endif
     #if ((D_SEG_Total>11)||(D_SEG_Total==11))
	   IO_LED_SEG10=0;
     #endif
     #if ((D_SEG_Total>10)||(D_SEG_Total==10)) 
	   IO_LED_SEG9=0;	
     #endif
     #if ((D_SEG_Total>9)||(D_SEG_Total==9))
	   IO_LED_SEG8=0;
     #endif
     #if ((D_SEG_Total>8)||(D_SEG_Total==8)) 
	   IO_LED_SEG7=0;	
     #endif
     #if ((D_SEG_Total>7)||(D_SEG_Total==7))
	   IO_LED_SEG6=0;
     #endif
     #if ((D_SEG_Total>6)||(D_SEG_Total==6))
	   IO_LED_SEG5=0;
     #endif
     #if ((D_SEG_Total>5)||(D_SEG_Total==5))
	   IO_LED_SEG4=0;
     #endif
     #if ((D_SEG_Total>4)||(D_SEG_Total==4))
	   IO_LED_SEG3=0;
     #endif
     #if ((D_SEG_Total>3)||(D_SEG_Total==3))
	   IO_LED_SEG2=0;
     #endif
     #if ((D_SEG_Total>2)||(D_SEG_Total==2))
	   IO_LED_SEG1=0;
     #endif
     #if ((D_SEG_Total>1)||(D_SEG_Total==1))
	   IO_LED_SEG0=0;
     #endif
}


/*****************************************************
*函数名称：void PT_LED_COM_N_SCAN()
*函数功能：LED 共阴
*入口参数：void
*出口参数：void
*作者：XY
*****************************************************/
void PT_LED_COM_N_SCAN()
{
     LED_CLOSE();	//关闭所有灯
     switch(R_LED_CNT)
     {
           #if ((D_COM_Total>1)||(D_COM_Total==1)) 
           case 0:
                 {
                    IO_LED_COM0=0;
//                    LED_SEG(R_LED_COM[0]);
                    break;
                 }
           #endif
           #if ((D_COM_Total>2)||(D_COM_Total==2)) 
           case 1:
                 {
                    IO_LED_COM1=0;
//                    LED_SEG(R_LED_COM[1]);
                    break;
                 }
           #endif
           #if ((D_COM_Total>3)||(D_COM_Total==3)) 
           case 2:
                 {
                    IO_LED_COM2=0;
//                    LED_SEG(R_LED_COM[2]);
                    break;
                 }
           #endif
           #if ((D_COM_Total>4)||(D_COM_Total==4)) 
           case 3:
                 {
                    IO_LED_COM3=0;
//                    LED_SEG(R_LED_COM[3]);
                    break;
                 }
           #endif
           #if ((D_COM_Total>5)||(D_COM_Total==5)) 
           case 4:
                 {
                    IO_LED_COM4=0;
//                    LED_SEG(R_LED_COM[4]);
                    break;
                 }
           #endif
           #if ((D_COM_Total>6)||(D_COM_Total==6)) 
           case 5:
                 {
                    IO_LED_COM5=0;
//                    LED_SEG(R_LED_COM[5]);
                    break;
                 }
           #endif
           #if ((D_COM_Total>7)||(D_COM_Total==7)) 
           case 6:
                 {
                    IO_LED_COM6=0;
//                    LED_SEG(R_LED_COM[6]);
                    break;
                 }
           #endif
           #if ((D_COM_Total>8)||(D_COM_Total==8)) 
           case 7:
                 {
                    IO_LED_COM7=0;
//                    LED_SEG(R_LED_COM[7]);
                    break;
                 }
           #endif
           default:   break;
     }
     
     LED_SEG(C_LED_DISP[R_LED_DATA_COM[R_LED_CNT]]);

     if(R_LED_CNT<D_COM_Total)
     {
         R_LED_CNT++;
         if(R_LED_CNT==D_COM_Total)
         { 
            R_LED_CNT=0;
         }
     }
     
}

/*****************************************************
*函数名称：void LED_SEG(unsigned int R_SEG)
*函数功能：LED 点SEG
*入口参数：void
*出口参数：void
*作者：XY
*****************************************************/
void LED_SEG(unsigned int R_SEG)
{
    #if ((D_SEG_Total>1)||(D_SEG_Total==1)) 
    if(R_SEG&0x0001)
    {
        IO_LED_SEG0=1;
    }
    #endif
    #if ((D_SEG_Total>2)||(D_SEG_Total==2)) 
    if(R_SEG&0x0002)
    {
        IO_LED_SEG1=1;
    }
    #endif
    #if ((D_SEG_Total>3)||(D_SEG_Total==3)) 
    if(R_SEG&0x0004)
    {
        IO_LED_SEG2=1;
    }
    #endif
    #if ((D_SEG_Total>4)||(D_SEG_Total==4)) 
    if(R_SEG&0x0008)
   {
        IO_LED_SEG3=1;
    }
    #endif
     //---
    #if ((D_SEG_Total>5)||(D_SEG_Total==5)) 
    if(R_SEG&0x0010)
    {
        IO_LED_SEG4=1;
    }
    #endif
    #if ((D_SEG_Total>6)||(D_SEG_Total==6)) 
    if(R_SEG&0x0020)
    {
        IO_LED_SEG5=1;
    }
    #endif
    #if ((D_SEG_Total>7)||(D_SEG_Total==7)) 
    if(R_SEG&0x0040)
    {
        IO_LED_SEG6=1;
    }
    #endif
    #if ((D_SEG_Total>8)||(D_SEG_Total==8)) 
    if(R_SEG&0x0080)
    {
        IO_LED_SEG7=1;
    }
    #endif
     //---
    #if ((D_SEG_Total>9)||(D_SEG_Total==9)) 
    if(R_SEG&0x0100)
    {
        IO_LED_SEG8=1;
    }
    #endif
    #if ((D_SEG_Total>10)||(D_SEG_Total==10)) 
    if(R_SEG&0x0200)
    {
        IO_LED_SEG9=1;
    }
    #endif
    #if ((D_SEG_Total>11)||(D_SEG_Total==11)) 
    if(R_SEG&0x0400)
    {
        IO_LED_SEG10=1;
    }
    #endif
    #if ((D_SEG_Total>12)||(D_SEG_Total==12)) 
    if(R_SEG&0x0800)
    {
        IO_LED_SEG11=1;
    }
    #endif
}


//void Update_Disp_Smg(void)
//{
//		static uint32_t i = 0;
//		i= Touch_Keyvalue^key_value_save;
//		switch (i)
//		{
//			case 0x01:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=1|D_DP;   P02=1;}  
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=1;        P02=0;}break;
//			case 0x02:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=2|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=2;        P02=0;}break;
//			case 0x04:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=3|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=3;        P02=0;}break;
//			case 0x08:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=4|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=4;        P02=0;}break;
//			case 0x10:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=5|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=5;        P02=0;}break;
//			case 0x20:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=6|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=6;        P02=0;}break;
//			case 0x40:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=7|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=7;        P02=0;}break;
//			case 0x80:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=8|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=8;        P02=0;}break;
//      case 0x0100:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=9|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=9;        P02=0;}break;
//		  case 0x0200:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=0|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=0;        P02=0;}break;
//			case 0x0400:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=1|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=1;        P02=0;}break;
//			case 0x0800:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=2|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=2;        P02=0;}break;
//			case 0x1000:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=3|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=3;        P02=0;}break;
//			case 0x2000:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=4|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=4;        P02=0;}break;
//			case 0x4000:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=5|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=5;        P02=0;}break;
//		  case 0x8000:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=6|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=6;        P02=0;}break;
//		  case 0x10000:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=7|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=7;        P02=0;}break;
//		  case 0x20000:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=8|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=8;        P02=0;}break;
//		  case 0x40000:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=9|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=9;        P02=0;}break;
//		  case 0x80000:
//         if(Touch_Keyvalue&i){R_LED_DATA_COM[0]=0x02;       R_LED_DATA_COM[1]=0|D_DP;   P02=1;}
//         else{           R_LED_DATA_COM[0]=0x02;       R_LED_DATA_COM[1]=0;        P02=0;}break;
//				default:
//					break;
//		}
//  if(Touch_Keyvalue==0){P02=0;R_LED_DATA_COM[1]&=~0x10;}    
////  }
////  else{R_LED_DATA_COM[1] &=~D_DP; P02=0;}      
//  key_value_save = Touch_Keyvalue;

//}
/*****************************************************
*函数名称：void Update_Disp_Smg(uint32_t thkey)
*函数功能：更新触摸按键值显示
*入口参数：void
*出口参数：void
*作者：XY
*****************************************************/
void Update_Disp_Smg(uint32_t thkey)
{
		uint32_t i = 0;
		static uint32_t key_value_save = 0;
		i= thkey;
		switch (i)
		{
			case 0x01:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=1|D_DP;   P02=1;}  
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=1;        P02=0;}break;
			case 0x02:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=2|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=2;        P02=0;}break;
			case 0x04:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=3|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=3;        P02=0;}break;
			case 0x08:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=4|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=4;        P02=0;}break;
			case 0x10:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=5|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=5;        P02=0;}break;
			case 0x20:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=6|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=6;        P02=0;}break;
			case 0x40:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=7|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=7;        P02=0;}break;
			case 0x80:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=8|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=8;        P02=0;}break;
      case 0x0100:
         if(thkey&i){R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=9|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x00;       R_LED_DATA_COM[1]=9;        P02=0;}break;
		  case 0x0200:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=0|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=0;        P02=0;}break;
			case 0x0400:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=1|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=1;        P02=0;}break;
			case 0x0800:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=2|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=2;        P02=0;}break;
			case 0x1000:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=3|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=3;        P02=0;}break;
			case 0x2000:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=4|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=4;        P02=0;}break;
			case 0x4000:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=5|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=5;        P02=0;}break;
		  case 0x8000:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=6|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=6;        P02=0;}break;
		  case 0x10000:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=7|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=7;        P02=0;}break;
		  case 0x20000:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=8|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=8;        P02=0;}break;
		  case 0x40000:
         if(thkey&i){R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=9|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x01;       R_LED_DATA_COM[1]=9;        P02=0;}break;
		  case 0x80000:
         if(thkey&i){R_LED_DATA_COM[0]=0x02;       R_LED_DATA_COM[1]=0|D_DP;   P02=1;}
         else{           R_LED_DATA_COM[0]=0x02;       R_LED_DATA_COM[1]=0;        P02=0;}break;
				default:
					break;
		}
  if(thkey==0){P02=0;R_LED_DATA_COM[1]&=~0x10;}    
//  }
//  else{R_LED_DATA_COM[1] &=~D_DP; P02=0;}      
  key_value_save = thkey;

}